package com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo;


import com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo.orderFees.OrderFeesCreateReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderDetailVo {

    /**
     * 账单开始时间
     */
    @Schema(description = "账单开始时间")
    private LocalDate startTime;

    /**
     * 账单结束时间
     */
    @Schema(description = "账单结束时间")
    private LocalDate endTime;

    /**
     * 账单总金额
     */
    @Schema(description = "账单总金额")
    private BigDecimal totalAmount = BigDecimal.ZERO;

    /**
     * 租金金额
     */
    @Schema(description = "租金金额")
    private BigDecimal rentAmount = BigDecimal.ZERO;

    /**
     * 押金金额
     */
    @Schema(description = "押金金额")
    private BigDecimal depositAmount = BigDecimal.ZERO;

    /**
     * 杂费金额
     */
    @Schema(description = "杂费金额")
    private BigDecimal extrasAmount = BigDecimal.ZERO;

    /**
     * 原押金金额
     */
    @Schema(description = "原押金金额")
    private BigDecimal oldDepositAmount = BigDecimal.ZERO;

    /**
     * 优惠金额
     */
    @Schema(description = "优惠金额")
    private BigDecimal discountValue = BigDecimal.ZERO;

    @Schema(name = "叠加优惠金额")
    private BigDecimal extraDiscountValue = BigDecimal.ZERO;

    /**
     * 应收款日期
     */
    @Schema(description = "应收款日期")
    private LocalDate receivablesTime;

    /**
     * 是否需要审核 审批状态(notReview  无需审核|inReview 审核中|effective 已生效|(rejected 已驳回)
     */
    private String approvedStatus;
    /*
     * 账单承担人 0 个人 1 企业
     * */
    private Integer roommateId=0;

    /**
     * 支付状态(unpaid 待支付 |payment 已支付|part  部分支付),
     */
    private String payStatus;

    /**
     * 已收账单总额
     */
    private BigDecimal paidRentUtilities;

    /**
     * 账单明细
     */
    @Schema(description = "账单明细")
    List<OrderFeesCreateReqVO> feeDetail;


}
